package com.jrx.anytxn.feign.gateway.service;


import com.jrx.anytxn.feign.gateway.bean.ApiResponse;
import com.jrx.anytxn.feign.gateway.bean.BaseApiResponse;
import com.jrx.anytxn.feign.gateway.response.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

@FeignClient(name ="bank-gateway")
public interface IInnerGatewayService {

    /**
     * ecif客户信息注册或更新
     * @param ecifRequest01Json
     * @return
     */
    @PostMapping(value = "/ApiIn/ecif/01",consumes = "application/json;charset=UTF-8")
    ApiResponse<EcifResponse01> registerEcif(@RequestBody String ecifRequest01Json);

    /**
     * ecif客户信息查询
     * @param ecifRequest02Json
     * @return
     */
    @PostMapping(value = "/ApiIn/ecif/02",consumes = "application/json;charset=UTF-8")
    ApiResponse<EcifResponse02> queryEcifInfo(@RequestBody String ecifRequest02Json);

    /**
     * 他行卡剩余额度次数查询
     * @param paymentRequest01Json
     * @return
     */
    @PostMapping(value = "/ApiIn/payment/01",consumes = "application/json;charset=UTF-8")
    ApiResponse<PaymentResponse01> queryCardLimitOrCount(@RequestBody String paymentRequest01Json);

    /**
     * 单笔交易状态查询 ACMT002750
     * @param paymentRequest04Json
     * @return
     */
    @PostMapping(value = "/ApiIn/payment/04",consumes = "application/json;charset=UTF-8")
    ApiResponse<PaymentResponse04> queryTransactionStatus(@RequestBody String paymentRequest04Json);

    /**
     * 单笔代付
     * @param paymentRequest05Json
     * @return
     */
    @PostMapping(value = "/ApiIn/payment/05",consumes = "application/json;charset=UTF-8")
    ApiResponse<PaymentResponse05> singlePayment(@RequestBody String paymentRequest05Json);

    /**
     * 单笔代收 ACMT001260
     * @param paymentRequest06Json
     * @return
     */
    @PostMapping(value = "/ApiIn/payment/06",consumes = "application/json;charset=UTF-8")
    ApiResponse<PaymentResponse06> singleCollection(@RequestBody String paymentRequest06Json);

    /**
     * 短信发送
     * @param smsRequest02Json
     * @return
     */
    @PostMapping(value = "/ApiIn/sms/02",consumes = "application/json;charset=UTF-8")
    ApiResponse<SmsResponse02> sms(@RequestBody String smsRequest02Json);

    /**
     * 合作行放款审核
     *
     * @param partnerRequest01Json 合作行放款审核请求
     * @return ApiResponse<BaseApiResponse> 合作行放款结果
     * @author liuyang
     * @date 2020-6-16
     */
    @PostMapping(value = "/ApiIn/partner/01",consumes = "application/json;charset=UTF-8")
    ApiResponse<BaseApiResponse> partnerLoanApprove(@RequestBody String partnerRequest01Json);

    /**
     * 合作行授信申请
     *
     * @param partnerRequest02Json 合作行授信申请请求
     * @return ApiResponse<PartnerResponse02> 授信结果
     * @author liuyang
     * @date 2020-6-16
     */
    @PostMapping(value = "/ApiIn/partner/02",consumes = "application/json;charset=UTF-8")
    ApiResponse<PartnerResponse02> partnerCreditApply(@RequestBody String partnerRequest02Json);

    /**
     * 合作行授信结果查询
     *
     * @param partnerRequest03Json 合作行授信结果查询请求
     * @return ApiResponse<PartnerResponse03> 授信结果
     * @author liuyang
     * @date 2020-6-16
     */
    @PostMapping(value = "/ApiIn/partner/03",consumes = "application/json;charset=UTF-8")
    ApiResponse<PartnerResponse03> queryPartnerCreditResult(@RequestBody String partnerRequest03Json);

    /**
     * 行内转账冲正
     *
     * @param coreRequest09Json 行内转账冲正请求
     * @return ApiResponse<CoreResponse09> 行内转账冲正结果
     * @author liuyang
     * @date 2020-6-16
     */
    @PostMapping(value = "/ApiIn/core/09",consumes = "application/json;charset=UTF-8")
    ApiResponse<CoreResponse09> coreToRectify(@RequestBody String coreRequest09Json);

    /**
     * 账户冻结/解冻
     *
     * @param coreRequest10Json 账户冻结/解冻请求
     * @return ApiResponse<CoreResponse10> 账户冻结/解冻结果
     * @author liuyang
     * @date 2020-6-16
     */
    @PostMapping(value = "/ApiIn/core/10",consumes = "application/json;charset=UTF-8")
    ApiResponse<CoreResponse10> freezeAccount(@RequestBody String coreRequest10Json);

    /**
     * 行内转账
     *
     * @param coreRequest04Json 行内转账请求
     * @return ApiResponse<CoreResponse04> 行内转账结果
     * @author liuyang
     * @date 2020-6-16
     */
    @PostMapping(value = "/ApiIn/core/04",consumes = "application/json;charset=UTF-8")
    ApiResponse<CoreResponse04> transferAcct(@RequestBody String coreRequest04Json);

    /**
     * 本行卡余额查询
     * @param coreRequest05Json
     * @return
     */
    @PostMapping(value = "/ApiIn/core/05",consumes = "application/json;charset=UTF-8")
    ApiResponse<CoreResponse05> queryAvailAmnt(@RequestBody String coreRequest05Json);

    /**
     * 汇总并账
     *
     * @param coreRequest11Json 汇总并账请求
     * @return ApiResponse<CoreResponse04> 汇总并账结果
     */
    @PostMapping(value = "/ApiIn/core/11",consumes = "application/json;charset=UTF-8")
    ApiResponse<CoreResponse11> mergeBillSum(@RequestBody String coreRequest11Json);

    /**
     * 明细并账
     *
     * @param coreRequest12Json 明细并账请求
     * @return ApiResponse<CoreResponse04> 汇总并账结果
     */
    @PostMapping(value = "/ApiIn/core/12",consumes = "application/json;charset=UTF-8")
    ApiResponse<CoreResponse12> mergeBillDetl(@RequestBody String coreRequest12Json);

    /**
     * 营销信息推送
     *
     * @param evidenceRequest01Json 营销信息推送请求
     * @return ApiResponse<EvidenceResponse01> 营销信息推送结果
     */
    @PostMapping(value = "/ApiIn/evidence/01",consumes = "application/json;charset=UTF-8")
    ApiResponse<EvidenceResponse01> sendMarketing(@RequestBody String evidenceRequest01Json);

    /**
     * 营销信息推送结果查询
     *
     * @param evidenceRequest02Json 营销信息推送结果查询请求
     * @return ApiResponse<EvidenceResponse01> 营销信息推送结果查询结果
     */
    @PostMapping(value = "/ApiIn/evidence/02",consumes = "application/json;charset=UTF-8")
    ApiResponse<EvidenceResponse02> checkMarketing(@RequestBody String evidenceRequest02Json);

    /**
     * 权益平台下单
     * @param couponReqJson 下单请求参数
     * @return
     */
    @PostMapping(value = "/ApiIn/coupon/create", consumes = "application/json;charset=UTF-8")
    ApiResponse<CouponResponse05> createCoupon(@RequestBody String couponReqJson);

    /**
     * 行内退款(溢缴款)转账 PYMT001190（他行）+ACPG000090（本行）
     * @param coreRequest20Json
     * @return
     */
    @PostMapping(value = "/ApiIn/core/20",consumes = "application/json;charset=UTF-8")
    ApiResponse<CoreResponse20> refund(@RequestBody String coreRequest20Json);

    /**
     * 互转交易服务 ACPG000090
     * @param coreRequest16Json
     * @return
     */
    @PostMapping(value = "/ApiIn/core/16",consumes = "application/json;charset=UTF-8")
    ApiResponse<CoreResponse16> interestCompensate(@RequestBody String coreRequest16Json);

    /**
     * 微信模板消费推送
     * @param coreRequest21Json
     * @return
     */
    @PostMapping(value = "/ApiIn/core/21", consumes = "application/json;charset=UTF-8")
    ApiResponse<CoreResponse21> weChatTemplatePush(@RequestBody String coreRequest21Json);

    /**
     * 获取核心对账文件（T24） ACPG000020
     * @param coreRequest19Json
     * @return
     */
    @PostMapping(value = "/ApiIn/core/19", consumes = "application/json;charset=UTF-8")
    ApiResponse<CoreResponse19> entrustedPayment(@RequestBody String coreRequest19Json);

    /**
     * PCP交易状态查询 PYMT000700
     * @param coreRequest32Json
     * @return
     */
    @PostMapping(value = "/ApiIn/core/32", consumes = "application/json;charset=UTF-8")
    ApiResponse<CoreResponse32> pcpTransactionStatus(@RequestBody String coreRequest32Json);

    /**
     * 本行卡余额查询
     * @param coreRequest17Json
     * @return
     */
    @PostMapping(value = "/ApiIn/card/17", consumes = "application/json;charset=UTF-8")
    ApiResponse<CoreResponse17> queryAvailBalance(@RequestBody String coreRequest17Json);
}
